#![allow(non_upper_case_globals)]

use crate::ffi::*;

macro_rules! AV_PIX_FMT_NE {
    ($def: ident, $be: ident, $le: ident) => {
        #[cfg(target_endian = "big")]
        pub const $def: AVPixelFormat = $be;

        #[cfg(target_endian = "little")]
        pub const $def: AVPixelFormat = $le;
    };
}

AV_PIX_FMT_NE!(AV_PIX_FMT_RGB32, AV_PIX_FMT_ARGB, AV_PIX_FMT_BGRA);
AV_PIX_FMT_NE!(AV_PIX_FMT_RGB32_1, AV_PIX_FMT_RGBA, AV_PIX_FMT_ABGR);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGR32, AV_PIX_FMT_ABGR, AV_PIX_FMT_RGBA);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGR32_1, AV_PIX_FMT_BGRA, AV_PIX_FMT_ARGB);
AV_PIX_FMT_NE!(AV_PIX_FMT_0RGB32, AV_PIX_FMT_0RGB, AV_PIX_FMT_BGR0);
AV_PIX_FMT_NE!(AV_PIX_FMT_0BGR32, AV_PIX_FMT_0BGR, AV_PIX_FMT_RGB0);

AV_PIX_FMT_NE!(AV_PIX_FMT_GRAY9, AV_PIX_FMT_GRAY9BE, AV_PIX_FMT_GRAY9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY10BE, AV_PIX_FMT_GRAY10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY12BE, AV_PIX_FMT_GRAY12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GRAY16, AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_GRAY16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YA16, AV_PIX_FMT_YA16BE, AV_PIX_FMT_YA16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_RGB48, AV_PIX_FMT_RGB48BE, AV_PIX_FMT_RGB48LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_RGB565, AV_PIX_FMT_RGB565BE, AV_PIX_FMT_RGB565LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_RGB555, AV_PIX_FMT_RGB555BE, AV_PIX_FMT_RGB555LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_RGB444, AV_PIX_FMT_RGB444BE, AV_PIX_FMT_RGB444LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_RGBA64, AV_PIX_FMT_RGBA64BE, AV_PIX_FMT_RGBA64LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGR48, AV_PIX_FMT_BGR48BE, AV_PIX_FMT_BGR48LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGR565, AV_PIX_FMT_BGR565BE, AV_PIX_FMT_BGR565LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGR555, AV_PIX_FMT_BGR555BE, AV_PIX_FMT_BGR555LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGR444, AV_PIX_FMT_BGR444BE, AV_PIX_FMT_BGR444LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BGRA64, AV_PIX_FMT_BGRA64BE, AV_PIX_FMT_BGRA64LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV420P9BE , AV_PIX_FMT_YUV420P9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV422P9BE , AV_PIX_FMT_YUV422P9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P9BE , AV_PIX_FMT_YUV444P9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV420P10BE, AV_PIX_FMT_YUV420P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV422P10BE, AV_PIX_FMT_YUV422P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV440P10, AV_PIX_FMT_YUV440P10BE, AV_PIX_FMT_YUV440P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV444P10BE, AV_PIX_FMT_YUV444P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV420P12BE, AV_PIX_FMT_YUV420P12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV422P12BE, AV_PIX_FMT_YUV422P12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV440P12, AV_PIX_FMT_YUV440P12BE, AV_PIX_FMT_YUV440P12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV444P12BE, AV_PIX_FMT_YUV444P12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV420P14BE, AV_PIX_FMT_YUV420P14LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV422P14BE, AV_PIX_FMT_YUV422P14LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV444P14, AV_PIX_FMT_YUV444P14BE, AV_PIX_FMT_YUV444P14LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV420P16BE, AV_PIX_FMT_YUV420P16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV422P16BE, AV_PIX_FMT_YUV422P16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUV444P16, AV_PIX_FMT_YUV444P16BE, AV_PIX_FMT_YUV444P16LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP9BE , AV_PIX_FMT_GBRP9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP10BE, AV_PIX_FMT_GBRP10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP12BE, AV_PIX_FMT_GBRP12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP14BE, AV_PIX_FMT_GBRP14LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRP16, AV_PIX_FMT_GBRP16BE, AV_PIX_FMT_GBRP16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRAP10, AV_PIX_FMT_GBRAP10BE, AV_PIX_FMT_GBRAP10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRAP12, AV_PIX_FMT_GBRAP12BE, AV_PIX_FMT_GBRAP12LE);
#[cfg(feature = "ffmpeg7")]
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRAP14, AV_PIX_FMT_GBRAP14BE, AV_PIX_FMT_GBRAP14LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRAP16, AV_PIX_FMT_GBRAP16BE, AV_PIX_FMT_GBRAP16LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_BAYER_BGGR16, AV_PIX_FMT_BAYER_BGGR16BE, AV_PIX_FMT_BAYER_BGGR16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BAYER_RGGB16, AV_PIX_FMT_BAYER_RGGB16BE, AV_PIX_FMT_BAYER_RGGB16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BAYER_GBRG16, AV_PIX_FMT_BAYER_GBRG16BE, AV_PIX_FMT_BAYER_GBRG16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_BAYER_GRBG16, AV_PIX_FMT_BAYER_GRBG16BE, AV_PIX_FMT_BAYER_GRBG16LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRPF32BE, AV_PIX_FMT_GBRPF32LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_GBRAPF32, AV_PIX_FMT_GBRAPF32BE, AV_PIX_FMT_GBRAPF32LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_GRAYF32, AV_PIX_FMT_GRAYF32BE, AV_PIX_FMT_GRAYF32LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA420P9, AV_PIX_FMT_YUVA420P9BE , AV_PIX_FMT_YUVA420P9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA422P9BE , AV_PIX_FMT_YUVA422P9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA444P9, AV_PIX_FMT_YUVA444P9BE , AV_PIX_FMT_YUVA444P9LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA420P10BE, AV_PIX_FMT_YUVA420P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA422P10BE, AV_PIX_FMT_YUVA422P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA444P10BE, AV_PIX_FMT_YUVA444P10LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA420P16, AV_PIX_FMT_YUVA420P16BE, AV_PIX_FMT_YUVA420P16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA422P16, AV_PIX_FMT_YUVA422P16BE, AV_PIX_FMT_YUVA422P16LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_YUVA444P16, AV_PIX_FMT_YUVA444P16BE, AV_PIX_FMT_YUVA444P16LE);

AV_PIX_FMT_NE!(AV_PIX_FMT_XYZ12, AV_PIX_FMT_XYZ12BE, AV_PIX_FMT_XYZ12LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_NV20, AV_PIX_FMT_NV20BE, AV_PIX_FMT_NV20LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_AYUV64, AV_PIX_FMT_AYUV64BE, AV_PIX_FMT_AYUV64LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_P010, AV_PIX_FMT_P010BE, AV_PIX_FMT_P010LE);
#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_P012, AV_PIX_FMT_P012BE, AV_PIX_FMT_P012LE);
AV_PIX_FMT_NE!(AV_PIX_FMT_P016, AV_PIX_FMT_P016BE, AV_PIX_FMT_P016LE);

#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_Y210, AV_PIX_FMT_Y210BE,  AV_PIX_FMT_Y210LE);
#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_Y212, AV_PIX_FMT_Y212BE,  AV_PIX_FMT_Y212LE);
#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_XV30, AV_PIX_FMT_XV30BE,  AV_PIX_FMT_XV30LE);
#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_XV36, AV_PIX_FMT_XV36BE,  AV_PIX_FMT_XV36LE);
#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_X2RGB10, AV_PIX_FMT_X2RGB10BE, AV_PIX_FMT_X2RGB10LE);
#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_X2BGR10, AV_PIX_FMT_X2BGR10BE, AV_PIX_FMT_X2BGR10LE);

#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_P210, AV_PIX_FMT_P210BE, AV_PIX_FMT_P210LE);
#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_P410, AV_PIX_FMT_P410BE, AV_PIX_FMT_P410LE);
#[cfg(feature = "ffmpeg7")]
AV_PIX_FMT_NE!(AV_PIX_FMT_P212, AV_PIX_FMT_P212BE, AV_PIX_FMT_P212LE);
#[cfg(feature = "ffmpeg7")]
AV_PIX_FMT_NE!(AV_PIX_FMT_P412, AV_PIX_FMT_P412BE, AV_PIX_FMT_P412LE);
#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_P216, AV_PIX_FMT_P216BE, AV_PIX_FMT_P216LE);
#[cfg(any(feature = "ffmpeg5", feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_P416, AV_PIX_FMT_P416BE, AV_PIX_FMT_P416LE);

#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_RGBAF16, AV_PIX_FMT_RGBAF16BE, AV_PIX_FMT_RGBAF16LE);

#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_RGBF32, AV_PIX_FMT_RGBF32BE, AV_PIX_FMT_RGBF32LE);
#[cfg(any(feature = "ffmpeg6", feature = "ffmpeg7"))]
AV_PIX_FMT_NE!(AV_PIX_FMT_RGBAF32, AV_PIX_FMT_RGBAF32BE, AV_PIX_FMT_RGBAF32LE);
